class GameEntity implements Hashable {
  String _id;
  GameEntityData data;
  GameEntityTags tags;
  
  String get id() => _id;
  set id(String value) {
    if (_id != value) {
      String old = _id;

      _id = value;

      world._onIDChanged(this, old);
    }
  }
  
  GameEntity() {
    _id = null;
    tags = new GameEntityTags(this);
  }
  
  int hashCode() {
    return _id.hashCode();
  }
  
  GameEntity c(String name, Object item) {
    return this;
  }
  
  GameEntity tag(String item) {
    return this;
  }
  
  GameEntity child(GameEntity item) {
    return this;
  }
  
  GameEntity on(String event, [GameEntityCommand command, String id]) {
    return this;
  }
  
  GameEntity off(String event, [String id]) {
    return this;
  }

  GameEntity raise(String event, [arg1, arg2, arg3, arg4]) {
    return this;
  }
  
  GameEntity remove([String c, String tag, Iterable<String> tags, String on]) {
    return this;
  }
}
